对mysql数据表增加 created_at 和 updated_at列,自动记录创建和更新时间,性能最优的做法是什么?

在 MySQL 数据表中增加 created_atupdated_at 列并自动记录创建和更新时间,性能最优的做法是使用 DATETIMETIMESTAMP 数据类型,并结合 DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP 属性。以下是具体实现方法:

创建新表时添加字段

在创建新表时,可以直接定义 created_atupdated_at 字段:

1
2
3
4
5
6
7
CREATE TABLE `my_table` (
`id` INT NOT NULL AUTO_INCREMENT,
`content` VARCHAR(255) NOT NULL,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  • created_at 字段使用 DEFAULT CURRENT_TIMESTAMP,在插入新记录时自动填充当前时间[^2^]。
  • updated_at 字段使用 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,在插入和更新记录时自动更新为当前时间[^2^]。

修改现有表时添加字段

如果表已经存在,可以通过 ALTER TABLE 语句添加这两个字段:

1
2
3
ALTER TABLE `my_table`
ADD COLUMN `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
ADD COLUMN `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';

这样可以为现有表快速添加自动记录时间的功能[^9^]。

性能优势

  • 减少代码复杂度:无需在应用程序中手动设置时间戳,减少了代码量和出错的可能性[^2^]。
  • 提高性能:直接利用 MySQL 的内置功能,比使用触发器等方式更高效[^5^]。
  • 灵活性DATETIMETIMESTAMP 数据类型都支持自动更新功能,可以根据需求选择[^2^]。

通过这种方式,可以高效地实现记录创建和更新时间的自动化管理,同时保持数据库的高性能和可维护性。

分享到:

评论完整模式加载中...如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理